httpd（Apache）配置详解与编译安装
==========================================
httpd的（MPM）工作模式：
    （1） prefork：多进程模型，一个进程响应一个请求。
           1： 一个主进程：负责生成子进程及回收子进程；负责创建套接字；负责接收请求，并将其派发给某子进程进行处理。
           2： n个子进程：每个子进程处理一个请求。
           3： 工作模型：会预先生成几个空闲进程，随时等待用于响应用户请求；最大空闲和最小空闲。

    （2） worker：多进程多线程模型，一个线程响应一个请求。
            1：一个主进程：负责生成子进程；负责创建套接字；负责接收请求，并将其派发给某子进程进行处理。
            2：多个子进程：每个子进程负责生成多个线程。
            3：每个线程：负责响应用户请求。
            4：并发响应数量：m*n。
                m：子进程数量。
                n：每个子进程所能创建的最大线程数量。

    （3） event：事件驱动模型，一个进程响应n个请求。
            1：一个主进程 ：负责生成子进程；负责创建套接字；负责接收请求，并将其派发给某子进程进行处理。
            2：子进程：基于事件驱动机制直接响应多个请求。

        备注：
            httpd-2.2: 仍为测试使用模型。
            httpd-2.4：event可生产环境中使用。

-------------------------------------------------------------------------------------------------------
yum安装时配置文件与程序环境
        命令：yum -y install httpd
-------------------------------------------------------------------------------------------------------
CentOS 6：默认安装 httpd-2.2
    （1）配置文件：
            /etc/httpd/conf/httpd.conf
            /etc/httpd/conf.d/*.conf

    （2）服务脚本：
            /etc/rc.d/init.d/httpd
            脚本配置文件：/etc/sysconfig/httpd

    （3）主程序文件：
            /usr/sbin/httpd
            /usr/sbin/httpd.event
            /usr/sbin/httpd.worker

    （4）日志文件：
            /var/log/httpd:
                access_log：访问日志
                error_log：错误日志

    （5）站点文档：
            /var/www/html

    （6）模块文件路径：
            /usr/lib64/httpd/modules

    （7）服务控制：
            chkconfig  httpd  on|off
            service  {start|stop|restart|status|configtest|reload}  httpd


CentOS 7：默认安装 httpd-2.4
    （1）配置文件：
            /etc/httpd/conf/httpd.conf
            /etc/httpd/conf.d/*.conf
            模块相关的配置文件：/etc/httpd/conf.modules.d/*.conf

    （2）服务脚本：
            /usr/lib/systemd/system/httpd.service

    （3）主程序文件：
            /usr/sbin/httpd
                httpd-2.4支持MPM的动态切换；

    （4）日志文件：
            /var/log/httpd:
                access_log：访问日志
                error_log：错误日志

    （5）站点文档：
            /var/www/html

    （6）模块文件路径：
            /usr/lib64/httpd/modules    
            
    （7）服务控制：
            systemctl  enable|disable  httpd.service
            systemctl  {start|stop|restart|status}  httpd.service

-------------------------------------------------------------------------------------------------------
主配置文件：/etc/httpd/conf/httpd.conf
-------------------------------------------------------------------------------------------------------
1、修改监听的IP和PORT
    Listen  [IP:]PORT
        (1) 省略IP表示为0.0.0.0；
        (2) Listen指令可重复出现多次；
            Listen  80
            Listen  8080
        (3) 修改监听socket，重启服务进程方可生效；
____________________________________________________________________________________________
2、持久连续：tcp连续建立后，每个资源获取完成后不全断开连接，而是继续等待其它资源请求的进行。
            副作用：对并发访问量较大的服务器，长连接机制会使得后续某些请求无法得到正常 响应。
            折衷：使用较短的持久连接时长，以及较少的请求数量。

        KeepAlive  On|Off
        #最大请求数
        MaxKeepAliveRequests  100        
        #超时时长
        KeepAliveTimeout  15

        测试格式：
            telnet  WEB_SERVER_IP  PORT
            GET  /URL  HTTP/1.1
            Host: WEB_SERVER_IP

        示例：
        ~]# telnet 172.18.21.60 80
            Trying 172.18.21.60...
            Connected to 172.18.21.60.
            Escape character is '^]'.
            GET /index.html HTTP/1.1    # 输入的内容
            Host: 172.18.21.60  #输入的内容。
            连续 Enter 两次

            # 备注：如果字符输入错误，按 ctrl+backspace 删除。
            # 如果打开配置，连接后不是立马断开。
____________________________________________________________________________________________
3、MPM 
            (1)：httpd-2.2不支持同时编译多个MPM模块。只能编译选定要使用的那个。
            (2)：CentOS 6的rpm包为此专门提供了三个应用程序文件，分别用于实现对不同的MPM机制的支持。
                    httpd(prefork)     httpd.worker   httpd.event
            (3)：查看使用程序文件：
                    ~]# ps  aux  | grep httpd
            (4)：查看httpd程序的模块列表。
                查看静态编译的模块。
                    ~]# httpd  -l
                查看静态编译及动态编译的模块。
                    ~]# httpd  -M
            (5)：更换使用httpd程序，默认使用的是 /usr/sbin/httpd 其为prefork的MPM模块。只能开启一个。
                httpd2.2：
                ~]# vi /etc/sysconfig/httpd
                        #HTTPD=/usr/sbin/httpd
                        #HTTPD=/usr/sbin/httpd.event
                        #HTTPD=/usr/sbin/httpd.worker
                httpd2.4：
                ~]# /etc/httpd/conf.modules.d/00-mpm.conf.
                    # http://httpd.apache.org/docs/2.4/mod/prefork.html
                    LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
                    # http://httpd.apache.org/docs/2.4/mod/worker.html
                    LoadModule mpm_worker_module modules/mod_mpm_worker.so
                    # http://httpd.apache.org/docs/2.4/mod/event.html
                    LoadModule mpm_event_module modules/mod_mpm_event.so

            (6)：MPM配置：
                    prefork的配置      
                        <IfModule prefork.c>
                            # 服务启动时进程数量
                            StartServers       8
                            # 最小空闲进程数量
                            MinSpareServers    5
                            # 最大空闲进程数量
                            MaxSpareServers   20
                            # 允许配置进程数的上限
                            ServerLimit      256
                            # 最大服务进程响应的数量
                            MaxClients       256
                            # 每个进程启动的最大线程数
                            MaxRequestsPerChild  4000
                        </IfModule>     

                    worker的配置：
                        <IfModule worker.c>
                            # 服务启动时进程数量
                            StartServers         4
                            # 最大服务进程响应的数量
                            MaxClients         300
                            # 最小空闲子进程
                            MinSpareThreads     25
                            # 最大空闲子进程
                            MaxSpareThreads     75
                            # 子进程生存期间常驻线程数
                            ThreadsPerChild     25
                            # 每个进程启动的最大线程数
                            MaxRequestsPerChild  0
                        </IfModule>                     
____________________________________________________________________________________________
4、DSO：配置指定实现模块加载
            LoadModule  <mod_name>  <mod_path>
            模块文件路径可使用相对路径：ServerRoot（默认/etc/httpd）
____________________________________________________________________________________________
5、定义文档页面路径，其相当于站点URL的根路径。可以使用符号链接和别名指向其他位置。
            DocumentRoot  "/var/www/html"
____________________________________________________________________________________________
6、站点访问控制常见机制
        (1)：文件系统路径：
            <Directory  "">
            ...
            </Directory>
            
            <File  "">
            ...
            </File>
            
            <FileMatch  "PATTERN">
            ...
            </FileMatch>
        (2)：URL路径：
            <Location  "">
            ...
            </Location>
            
            <LocationMatch "">
            ...
            </LocationMatch>
            
    (3)：<Directory>中“基于源地址”实现访问控制：
        (1)：Options
                Indexes：指明的URL路径下不存在与定义的主页面资源相符的资源文件时，返回索引列表给用户；
                Includes：服务器端包含
                FollowSymLinks：符号链接。
                SymLinksifOwnerMatch：符号链接与源文件必须属主相同时。
                ExecCGI：执行cgi脚本
                MultiViews：内容协商
                None：所有不允许。
                All：所有允许。

        (2)  AllowOverride与访问控制相关的哪些指令可以放在.htaccess文件（每个目录下都可以有一个），每个目录自己的访问控制。
                选项： FileInfo AuthConfig Limit
                All：允许
                None：不允许

        (3) 访问控制：Order allow,deny
            order：定义生效次序；写在后面的表示默认法则；
            Allow from, Deny from
                来源地址格式：
                    1：IP
                    2；网络地址（NetAddr） 
                        172.16
                        172.16.0.0
                        172.16.0.0/16
                        172.16.0.0/255.255.0.0
____________________________________________________________________________________________
7、定义站点主页面：
            DirectoryIndex  index.html  index.html.var
____________________________________________________________________________________________
8、定义路径别名。
        格式： Alias  /URL/  "/PATH/TO/SOMEDIR/"
____________________________________________________________________________________________
9、设定默认字符集。中文字符集：GBK, GB2312, GB18030
            AddDefaultCharset  UTF-8
____________________________________________________________________________________________
10、日志设定
    (1)：日志类型：访问日志 和 错误日志
    
    (2)：错误日志：
        ErrorLog  logs/error_log
        LogLevel  warn
            Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
            
    (3)：访问日志：
        LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
        CustomLog  logs/access_log  combined
        
        LogFormat format strings:
            http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
        
            %h：客户端IP地址；
            %l：Remote User, 通常为一个减号（“-”）；
            %u：Remote user (from auth; may be bogus if return status (%s) is 401)；非为登录访问时，其为一个减号；
            %t：服务器收到请求时的时间；
            %r：First line of request，即表示请求报文的首行；记录了此次请求的“方法”，“URL”以及协议版本；
            %>s：响应状态码；
            %b：响应报文的大小，单位是字节；不包括响应报文的http首部；
            %{Referer}i：请求报文中首部“referer”的值；即从哪个页面中的超链接跳转至当前页面的；
            %{User-Agent}i：请求报文中首部“User-Agent”的值；即发出请求的应用程序；
____________________________________________________________________________________________
11、基于用户的访问控制
        (1)：认证质询：
            WWW-Authenticate：响应码为401，拒绝客户端请求，并说明要求客户端提供账号和密码；
        (2)：认证：
            Authorization：客户端用户填入账号和密码后再次发送请求报文；认证通过时，则服务器发送响应的资源；
            认证方式有两种：
                basic：明文
                digest：消息摘要认证

        (3)：安全域：需要用户认证后方能访问的路径；应该通过名称对其进行标识，以便于告知用户认证的原因；

        (4)：虚拟账号：仅用于访问某服务时用到的认证标识

        (5)：存储：
                文本文件；
                SQL数据库；
                ldap目录存储；

        (6)：basic认证配置示例：
            (1)： 用户认证。
                <Directory "目录为访问站点时的某个目录">
                    Options None
                    AllowOverride None
                    AuthType Basic
                    AuthName "提示认证信息"
                    AuthUserFile  "/PATH/TO/HTTPD_USER_PASSWD_FILE"
                    Require  user  username1  username2 ...
                </Directory>

                附加：允许账号文件中的所有用户登录访问。
                    Require  valid-user

            (2) ：htpasswd 命令提供账号和密码存储（文本文件）
                    htpasswd  [options]   /PATH/TO/HTTPD_PASSWD_FILE  username 
                        -c：自动创建此处指定的文件，因此，仅应该在此文件不存在时使用；
                        -m：md5格式加密
                        -s: sha格式加密
                        -D：删除指定用户
                    示例：
                    ~]# htpasswd -c -m /etc/httpd/conf/.htpasswd tom
                        New password: 
                        Re-type new password: 
                        Adding password for user tom
                    ~]# htpasswd -m /etc/httpd/conf/.htpasswd jerry
                        New password: 
                        Re-type new password: 
                        Adding password for user jerry

            (3) 基于组账号进行认证.
                    <Directory "">
                        Options None
                        AllowOverride None
                        AuthType Basic
                        AuthName "String“
                        AuthUserFile  "/PATH/TO/HTTPD_USER_PASSWD_FILE"
                        AuthGroupFile "/PATH/TO/HTTPD_GROUP_FILE"
                        Require  group  grpname1  grpname2 ...
                    </Directory>

            (4) 创建用户账号和组账号文件；用户账号依然用htpasswd 组文件用vi创建即可
                    组文件：每一行定义一个组
                        GRP_NAME: username1  username2  ...

            备注：在访问浏览器某个目录的时候就会要求输入密码。
____________________________________________________________________________________________
12、虚拟主机
        站点标识： socket
            IP相同，但端口不同；
            IP不同，但端口均为默认端口；
            FQDN不同；
                请求报文中首部
                Host: www.magedu.com 

        有三种实现方案：
            基于ip：
                为每个虚拟主机准备至少一个ip地址；
            基于port：
                为每个虚拟主机使用至少一个独立的port；
            基于FQDN:
                为每个虚拟主机使用至少一个FQDN；
            
        注意：一般虚拟机不要与中心主机混用；因此，要使用虚拟主机，得先禁用'main'主机；
                禁用方法：注释中心主机的DocumentRoot指令即可；

                虚拟主机的配置方法：
                    <VirtualHost  IP:PORT>
                        ServerName IP|FQDN
                        DocumentRoot  ""
                    </VirtualHost>
____________________________________________________________________________________________
13、status页面
    LoadModule  status_module  modules/mod_status.so
    <Location /server-status>
        SetHandler server-status
        Order allow,deny
        Allow from 172.16
    </Location>
____________________________________________________________________________________________
14、curl 与 elinks 命令
            curl是基于URL语法在命令行方式下工作的文件传输工具，它支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等协议。curl支持HTTPS认证，并且支持HTTP的POST、PUT等方法， FTP上传， kerberos认证，HTTP上传，代理服务器， cookies， 用户名/密码认证， 下载文件断点续传，上载文件断点续传, http代理服务器管道（ proxy tunneling）， 甚至它还支持IPv6， socks5代理服务器,，通过http代理服务器上传文件到FTP服务器等等。
            MIME： major/minor,  image/png, image/gif

            SYNOPSIS
                   curl [options] [URL...]
            OPTIONS：
                    -A/--user-agent <string> 设置用户代理发送给服务器
                    --basic 使用HTTP基本认证
                    --tcp-nodelay 使用TCP_NODELAY选项
                    -e/--referer <URL> 来源网址
                    --cacert <file> CA证书 (SSL)
                    --compressed 要求返回是压缩的格式
                    -H/--header <line>自定义首部信息传递给服务器
                    -I/--head 只显示响应报文首部信息
                    --limit-rate <rate> 设置传输速度
                    -u/--user <user[:password]>设置服务器的用户和密码
                    -0/--http1.0 使用HTTP 1.0 

    elinks：字符模式的WWW浏览器
        SYNOPSIS
               elinks [OPTION]... [URL]...
        OPTIONS：
            -dump: 不进入交互式模式，而直接将URL的内容输出至标准输出。
        示例：两种不同的效果
            ~]# elinks http://www.baidu.com
            ~]# elinks --dump http://www.baidu.com
____________________________________________________________________________________________
15、apache运行程序身份：user/group。
        User apache
        Group apache

        备注：不建议使用root用户运行。

        SUexec：切换用户运行apache。
____________________________________________________________________________________________
16、使用mod_deflate模块压缩页面优化传输速度
        适用场景：
            (1) 节约带宽，额外消耗CPU；同时，可能有些较老浏览器不支持。
            (2) 压缩适于压缩的资源，例如文件文件。

            SetOutputFilter DEFLATE

~]# vi /etc/httpd/conf/httpd.conf  尾部加入。
# mod_deflate configuration
# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain 
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
# Level of compression (Highest 9 - Lowest 1) 
DeflateCompressionLevel 9
# Netscape 4.x has some problems.
BrowserMatch ^Mozilla/4  gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch  ^Mozilla/4\.0[678]  no-gzip
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSI[E]  !no-gzip !gzip-only-text/html
____________________________________________________________________________________________
17、https, 配置httpd支持https。
        (1) 配置httpd支持使用ssl，及使用的证书；
            ~]# yum -y install mod_ssl

        (2) 配置文件：/etc/httpd/conf.d/ssl.conf
            ~]# vi /etc/httpd/conf.d/ssl.conf
                DocumentRoot
                ServerName
                SSLCertificateFile /etc/httpd/ssl/httpd.crt
                SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

        (3) 测试基于https访问相应的主机；
            # openssl  s_client  [-connect host:port] [-cert filename] [-CApath directory] [-CAfile filename]
            ~]# openssl s_client -connect www.ca.com:443
____________________________________________________________________________________________
18、httpd自带的工具程序
        htpasswd：basic认证基于文件实现时，用到的账号密码文件生成工具。
        apachectl：httpd自带的服务控制脚本，支持start和stop。
        apxs：由httpd-devel包提供，扩展httpd使用第三方模块的工具。
        rotatelogs：日志滚动工具。
        suexec：访问某些有特殊权限配置的资源时，临时切换至指定用户身份运行。
        ab： apache bench
____________________________________________________________________________________________
19、httpd的压力测试工具
            ab, webbench, http_load, seige

            jmeter, loadrunner

            tcpcopy：网易，复制生产环境中的真实请求，并将之保存下来；

            ab  [OPTIONS]  URL
                -n：总请求数。
                -c：模拟的并行数。
                -k：以持久连接模式 测试。
____________________________________________________________________________________________
    httpd-2.4：
        
        新特性：
            (1) MPM支持运行为DSO机制；以模块形式按需加载；
            (2) event MPM生产环境可用；
            (3) 异步读写机制；
            (4) 支持每模块及每目录的单独日志级别定义；
            (5) 每请求相关的专用配置；
            (6) 增强版的表达式分析式；
            (7) 毫秒级持久连接时长定义；
            (8) 基于FQDN的虚拟主机也不再需要NameVirutalHost指令；
            (9) 新指令，AllowOverrideList；
            (10) 支持用户自定义变量；
            (11) 更低的内存消耗；
            
        新模块：
            (1) mod_proxy_fcgi
            (2) mod_proxy_scgi
            (3) mod_remoteip

            CentOS 7：
                # yum install  httpd
                
                配置文件：
                    /etc/httpd/conf/httpd.conf
                    /etc/httpd/conf.modules.d/*.conf
                    /etc/httpd/conf.d/*.conf
                    
                配置应用：
                    (1) 切换使用的MPM
                        编辑配置文件/etc/httpd/conf.modules.d/00-mpm.conf，启用要启用的MPM相关的LoadModule指令即可。
                        
                    (2) 基于IP的访问控制
                        允许所有主机访问：Require  all  granted
                        拒绝所有主机访问：Require  all  deny
                        
                        控制特定的IP访问：
                            Require  ip  IPADDR：授权指定来源的IP访问；
                            Require  not  ip  IPADDR：拒绝
                            
                        控制特定的主机访问：
                            Require  host  HOSTNAME：授权指定来源的主机访问；
                            Require  not  host  HOSTNAME：拒绝
                            
                            HOSTNAME：
                                FQDN：特定主机
                                domin.tld：指定域名下的所有主机
                                                        
                        <RequireAll>
                            Require all granted
                            Require not ip 172.16.100.2
                        </RequireAll>                       
                        
                    (3) 虚拟主机
                        基于FQDN的虚拟主机也不再需要NameVirutalHost指令；
                        
                        <VirtualHost *:80>
                            ServerName www.b.net
                            DocumentRoot "/apps/b.net/htdocs"
                            <Directory "/apps/b.net/htdocs">
                                Options None
                                AllowOverride None
                                Require all granted
                            </Directory>
                        </VirtualHost>  
                        
                        注意：任意目录下的页面只有显式授权才能被访问；
                        
                    (4) ssl
                    
                    (5)  KeepAliveTimeout  #ms
                        毫秒级持久连接时长定义；
____________________________________________________________________________________________
仅适用于 CentOS 6：
~]# service httpd configtest
# CentOS 6 和 7
~]# httpd -t








yum install openssl-devel

./configure --prefix=/usr/local/apache24 --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork


启动：
    /usr/local/apache24/bin/apachectl start

查看端口80是否被监听
ss -tnl

临时：
    export PATH=/usr/local/apache24/bin:$PATH
永久：
    vim /etc/profile.d/httpd.sh
    加入：
       export PATH=/usr/local/apache24/bin:$PATH

导出头文件：
    ln -sv /usr/local/apache24/include /usr/include/httpd

<!-- 导出库文件：
    vi /etc/ld.so.conf.d/httpd.conf
            /usr/local/apache24/lib
    重新加载：
        ldconfig -v
 -->
添加系统启动服务：
        vi /etc/rc.d/init.d/httpd24
开机启动：
    chkconfig --add httpd24
    chkconfig --level 35 httpd24 on
    chkconfig --list httpd24

启动：
    service httpd24 status


安装php：
./configure --prefix=/usr/local/php7 --with-apxs2=/usr/local/apache24/bin/apxs

yum install libxml2-devel 


configure: error: xml2-config not found. Please check your libxml2 installation.




    快速部署amp：
        CentOS 7:
            Modules：程序包，httpd, php, php-mysql, mariadb-server
            FastCGI：程序包，httpd, php-fpm, php-mysql, mariadb-server
        CentOS 6：
            httpd, php, php-mysql, mysql-server

    (2) 安装配置mariadb                     
                        # useradd  -r  mysql
                        # tar xf  mariadb-VERSION.tar.xz  -C  /usr/local
                        # cd /usr/local
                        # ln  -sv  mariadb-VERSION  mysql
                        # cd  /usr/local/mysql
                        # chown  -R  root:mysql  ./*
                        # scripts/mysql_install_db  --user=mysql  --datadir=/data/data
                        # cp  support-files/mysql.server   /etc/init.d/mysqld
                        # chkconfig   --add  mysqld


cp support-file/my-large.cnf /etc/mysql/my.cnf

[mysqld]
datadir = /data/data
skip_name_resolve = ON
innodb_file_per_table = ON


--enable-mysqlnd --with-pdo-mysql=mysqlnd

php安装：
    ./configure --prefix=/usr/local/php7 --with-apxs2=/usr/local/apache24/bin/apxs --with-mcrypt --enable-mysqlnd --with-iconv --enable-mbstring  --with-openssl  --enable-sockets --with-curl --with-mysqli --with-pdo-mysql


    快速部署amp：
        CentOS 7:
            Modules：程序包，httpd, php, php-mysql, mariadb-server
                yum install -y httpd php php-mysql mariadb-server
            FastCGI：程序包，httpd, php-fpm, php-mysql, mariadb-server
                yum install -y httpd php-fpm php-mysql mariadb-server
        CentOS 6：
            httpd, php, php-mysql, mysql-server

~]# vi /etc/php.ini 
[root@localhost ~]# vi /etc/php-fpm.conf
连接池：/etc/php-fpm.d/www.conf
 systemctl restart php-fpm.service
 yum list all | grep httpd
 ]# httpd -M | grep fcgi
 # cd /etc/httpd/conf.modules.d/ vi 00-proxy.conf 
vi conf.d/fcgi.conf
# 关闭正想代理
ProxyRequests off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1

 httpd -t
 systemctl start httpd.service

  <Directory />
     AllowOverride none
     Require all granted
</Directory>

/etc/httpd/conf.d/vhost.conf
DirectoryIndex index.php
ProxyRequests off 

DirectoryIndex index.php


<VirtualHost *:80>
    ServerName "www.a.com"
    DocumentRoot "/var/www/a"
    ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/a/$1

    <Directory "/var/www/a">
        Options None
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>


(2)
    远程授权：
    GRANT  priv_type,...  ON  [object_type]  db_name.tbl_name  TO  'user'@'host'  [IDENTIFIED BY  'password'];
    grant all on *.* to root@'172.18.%.%' IDENTIFIED by '123456';
    flush privileges


